struct list{
	int  data;
	struct list  *  next;
}/*@ true */
void  delete(struct list  *  h)
{
  struct list  *  x;
  struct list  *  y;


  y=h;
  while ((h) != (null))    /*@ true */
  {
    print(h->data);
    h=h->next;
    printp(y);
    free(y);
    y=h;
  }
  return;
}
/*@ true */


/*@ true */
int  main()
{
  struct list  *  head;
  struct list  *  test;
  struct list  *  p;
  struct list  *  q;
  int  i;


  i=0;
  head = alloc (struct list );
  head->next=null;
  head->data=(0) - (1);
  p=head;
  q=head;
  while ((i) < (10))    /*@ true */
  {
    p = alloc (struct list );
    p->data=(i) * (i);
    print(p->data);
    p->next=null;
    q->next=p;
    q=p;
    i=(i) + (1);
  }
  p=head;
  printp(head);
  delete(head);
  return (0);
}
/*@ true */


